<?php
/** 
 * Clase de validadores.
 * @author gemu
 * 
 * 
 */
class Validator
{
	/**
	 * Valida el usuario, si este no está logeado lanza un excepcion fatal.
	 * @throws ServiceException
	 */
	public static function rechazarNoLogeado($msgCode='') {
		return; //TODO: comentar cuando este en produccion
		if(!Zend_Session::isStarted() || !Zend_Session::namespaceIsset('Auth')) {
			throw new FatalException(Constantes::ERROR_FATAL_NO_LOGEADO);
		}
	}
	
	/**
	 * Valida que un numero este dentro de un rango permitido
	 * @param integer $var
	 * @param integer $min
	 * @param integer $max
	 */
	public static function validarNumero($var, $min=null, $max=null, $nombreParametro=null) {
		Validator::validarNoVacio($var, $nombreParametro);

		if(is_numeric($var)) {
			if($min != null && $var < $min) {
				throw new ServiceException('error.validacion.parametro_numero_no_menor', array($nombreParametro, $min));
			}
			if($max != null && $var > $max) {
				throw new ServiceException('error.validacion.parametro_numero_no_mayor', array($nombreParametro, $max));
			}
		} else {
			throw new ServiceException('error.validacion.parametro_no_numerico', array($nombreParametro));
		}
	}
	
	/**
	 * Lanza una excepcion si el parametro es nulo o vacio
	 * @param unknown_type $valor
	 */
	public static function validarNoVacio($var, $nombreParametro=null) {
		$msgCode = 'error.validacion.parametro_vacio';
		$params = null;
		
		if($nombreParametro != null && $nombreParametro != '') {
			$msgCode = 'error.validacion.parametro_obligatorio';
			$params = array($nombreParametro);
		}
		
		if(is_null($var)) {
			throw new ServiceException($msgCode, $params);
		}
		
		if(is_array($var) && count($var) == 0) {
			throw new ServiceException($msgCode, $params);
		}
		
		if(is_string($var) && $var == '') {
			throw new ServiceException($msgCode, $params);
		}
	}
}
?>